# -*- coding: utf-8 -*-

import sys
import pygame

class Arkanoid(object):
    size_screen = width_screen, height_screen = 300, 300
    screen = pygame.display.set_mode(size_screen)
    speed_ball = [1, 1]
    
    def __init__(self):
        # Вычисление координат исходного положения платформы
        self.platform = pygame.image.load('data/platform.png')
        self.platform_rect = self.platform.get_rect()
        self.width_platform = self.platform_rect[2]
        self.height_platform = self.platform_rect[3]
        
        self.x1 = 0
        self.y1 = self.height_screen - self.height_platform
        self.x2 = self.width_platform
        self.y2 = self.height_screen
        
        self.platform_rect = pygame.Rect(self.x1, self.y1, self.x2, self.y2)
        
        # Вычисление координат исходного положения шарика
        self.ball = pygame.image.load('data/ball15px.png')
        self.ball_rect = self.ball.get_rect()
        
        self.draw_platform() # Платформа в исходном положении
        self.draw_ball() # Шарик в исходном положении
        
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
                    self.movement_platform(1)
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
                    self.movement_platform(2)
            
            clock = pygame.time.Clock()
            clock.tick(100)
            self.movement_ball() # Перемещаем шарик
    
    def draw_platform(self):
        """ Рисует платформу """
        
        self.screen.blit(self.platform, self.platform_rect)
        pygame.display.flip()
    
    def movement_platform(self, course):
        """ Перемещает платформу в горизонтальном направлении """
        
        if course == 1 and self.platform_rect.left > 0:
            self.platform_rect = self.platform_rect.move((-20, 0))
        elif course == 2 and self.platform_rect.right < self.width_screen:
            self.platform_rect = self.platform_rect.move((20, 0))
        
        self.screen.fill((0, 0, 0))
        self.screen.blit(self.platform, self.platform_rect)
        
        self.draw_ball() # Перерисовываем шарик
        
        pygame.display.flip()
    
    def draw_ball(self):
        """ Рисует шарик """
        
        self.screen.blit(self.ball, self.ball_rect)
        pygame.display.flip()
    
    def movement_ball(self):
        """ Перемещает платформу """
        
        if self.ball_rect.bottom == self.height_screen: # Если шарик упал мимо платформы
            print 'Game Over'
            sys.exit()
        elif self.ball_rect.left < 0 or self.ball_rect.right > self.width_screen: # Отталкивание от боковых стенок
            print 'Отталкиваемся от боковых стенок'
            self.speed_ball[0] = -self.speed_ball[0]
        elif self.ball_rect.top < 0 or self.ball_rect.bottom > self.height_screen: # Отталкиваемся от потолка
            print 'Отталкиваемся от потолка'
            self.speed_ball[1] = -self.speed_ball[1]
        elif (self.ball_rect.bottom == self.height_screen - self.height_platform and
              self.ball_rect.left >= self.platform_rect.left and
              self.ball_rect.left < self.platform_rect.right): # Отталкиваемся от платформы
            print 'Оталкиваемся от платформы'
            self.speed_ball[1] = -self.speed_ball[1]
        
        self.ball_rect = self.ball_rect.move(self.speed_ball)
        
        self.screen.fill((0, 0, 0))
        self.screen.blit(self.ball, self.ball_rect)
        
        self.draw_platform() # Перерисовываем платформу
        
        pygame.display.flip()
    
if __name__ == '__main__':
    arkanoid = Arkanoid()